<?php
/**
 * Created by PhpStorm.
 * User: LiuJiaJun
 * Date: 2018/11/17
 * Time: 19:52
 */

namespace service\logger;

use think\Config;
use think\Session;

/**
 * 查看一下博文，了解日志错误捕获
 * https://segmentfault.com/a/1190000008131260
 *
 * Class LoggerFactory
 * @package service\logger
 */
class LoggerFactory
{

    /**
     * 配置信息，可以为PHP数组、xml文件的url、property文件的url
     * @var null
     */
    protected static $config = null;
    /**
     * 错误信息
     * @var null
     */
    protected static $errorMessage = null;

    /**
     * 关闭构造函数，禁止实例化
     * BaseLogFactory constructor.
     */
    private function __construct()
    {
    }

    /**
     * 禁止克隆
     */
    private function __clone()
    {
    }

    /**
     * 获取日志实例化
     * @param $loggerName
     * @return bool|\Logger
     */
    public static function getLogger($loggerName){
        if(self::$config === null){
            self::initDefaultConfig();
        }
        if(!isset($_SESSION)){
            Session::start();
        }
        vendor('Log4php.Logger');
        \Logger::configure(self::$config);
        return \Logger::getLogger($loggerName);
    }

    /**
     * 设置配置
     * @param array $config
     */
    public static function setConfig($config = []){
        self::$config = $config;
    }

    /**
     * 获取错误信息
     * @return null
     */
    public static function getErrorMessage(){
        return self::$errorMessage;
    }

    /**
     * 生成默认配置
     */
    private static function initDefaultConfig(){
        $config = Config::get('defaultLogConfig');
        self::setConfig($config);
    }

}